package com.ronghui.cash.util;


import java.math.BigDecimal;

public class Util {

	/**
	 * double 相加，这样不会损失精度,只保留两位小数
	 * 
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double add(double d1, double d2) {
		BigDecimal bd1 = new BigDecimal(Double.toString(d1));
		BigDecimal bd2 = new BigDecimal(Double.toString(d2));
		return Double.valueOf(bd1.add(bd2).doubleValue());
	}

	/**
	 * double 相减，这样不会损失精度,只保留两位小数
	 * 
	 * @param d1
	 * @param d2
	 * @return
	 */
	public static double sub(double d1, double d2) {
		BigDecimal bd1 = new BigDecimal(Double.toString(d1));
		BigDecimal bd2 = new BigDecimal(Double.toString(d2));
		return Double.valueOf(bd1.subtract(bd2).doubleValue());
	}

	/**
	 * double 相乘，这样不会损失精度,只保留两位小数
	 * 
	 * @param d1
	 * @param d2
	 * @return
	 */

	public static double mul(double d1, double d2) {
		BigDecimal bd1 = new BigDecimal(Double.toString(d1));
		BigDecimal bd2 = new BigDecimal(Double.toString(d2));
		// return Double.valueOf(getDouble(bd1.multiply(bd2).doubleValue()));
		return Double.valueOf(bd1.multiply(bd2).doubleValue());
	}

	/**
	 * 相除,这样不会损失精度,只保留两位小数
	 * 
	 * @param d1
	 * @param d2
	 * @param len
	 * @return
	 */
	public static double div(double d1, double d2) {
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return Double.valueOf(b1.divide(b2, 7, BigDecimal.ROUND_HALF_UP).doubleValue());
	}

	/**
	 * 把double转为只剩两位小数点的String,用来显示。
	 * 
	 * @param a
	 * @return
	 */
	public static String double2String(double d) {
		String temp = d + "";
		String[] t = temp.split("\\.");
		String dian = t[1];

		if (dian.length() == 1) {
			temp = temp + "0";
		} else if (dian.length() >= 2) {
			temp = t[0] + "." + dian.substring(0, 2);

		}
		return temp;
	}

	/**
	 * 把double转为只剩两位小数点的double,用来计算。
	 * 
	 * @param d
	 * @return
	 */
	public static Double double2Double(double d) {

		return Double.valueOf(double2String(d));

	}

	/**
	 * 手机号码格式化182****5716
	 * 
	 * @param mobile
	 * @return
	 */
	public static String mobileFormat(String mobile) {
		String reStr = mobile.substring(7, 11);
		String preStr = mobile.substring(0, 3);
		StringBuilder sb = new StringBuilder();
		sb.append(preStr).append("****").append(reStr);
		return sb.toString();
	}

	/**
	 * 手机号码格式化182*****716
	 * 
	 * @param mobile
	 * @return
	 */
	public static String mobileFormatBy5Star(String mobile) {
		String reStr = mobile.substring(8, 11);
		String preStr = mobile.substring(0, 3);
		StringBuilder sb = new StringBuilder();
		sb.append(preStr).append("*****").append(reStr);
		return sb.toString();
	}

	/**
	 * 银行账号格式化6214********3138 身份证号 4414**********337X
	 * 
	 * @param str
	 * @return
	 */
	public static String NOFormat(String str) {
		String reStr = str.substring(str.length() - 4, str.length());
		String preStr = str.substring(0, 4);
		StringBuilder sb = new StringBuilder();
		sb.append(preStr).append("********").append(reStr);
		return sb.toString();
	}

}
